package com.gl.glcourses.vos;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

@Entity
public class Votacion implements Serializable, IValueObject{

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	private Date fechaBaja;
	private Date fechaInicio;
	private Date fechaCierre;
	@OneToMany(mappedBy="votacion",fetch=FetchType.EAGER,cascade=CascadeType.ALL )
	private List<VotacionCurso> votacionesCurso = new ArrayList<VotacionCurso>();
	@ManyToMany(targetEntity=Usuario.class)
	private List<Usuario> usuarios = new ArrayList<Usuario>();
	private String nombreVotacion;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Date getFechaBaja() {
		return fechaBaja;
	}
	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}
	public Date getFechaInicio() {
		return fechaInicio;
	}
	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}
	public Date getFechaCierre() {
		return fechaCierre;
	}
	public void setFechaCierre(Date fechaCierre) {
		this.fechaCierre = fechaCierre;
	}
	public List<VotacionCurso> getVotacionesCurso() {
		return votacionesCurso;
	}
	public void setVotacionesCurso(List<VotacionCurso> votacionesCurso) {
		this.votacionesCurso = votacionesCurso;
	}
	public VotacionCurso addCurso( Curso curso ) {
		VotacionCurso votacionCurso = new VotacionCurso();
		votacionCurso.setCurso(curso);
		this.votacionesCurso.add(votacionCurso);
		return votacionCurso;
	}
	public String getNombreVotacion() {
		return nombreVotacion;
	}
	public void setNombreVotacion(String nombreVotacion) {
		this.nombreVotacion = nombreVotacion;
	}
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

}
